<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>find_box_3d [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dmatching.html">3D 匹配</a> / <a href="toc_3dmatching_3dbox.html">3D Box</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">find_box_3d</span><span data-if="c" style="display:none;">T_find_box_3d</span><span data-if="cpp" style="display:none;">FindBox3d</span><span data-if="dotnet" style="display:none;">FindBox3d</span><span data-if="python" style="display:none;">find_box_3d</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">find_box_3d</span><span data-if="c" style="display:none;">T_find_box_3d</span><span data-if="cpp" style="display:none;">FindBox3d</span><span data-if="dotnet" style="display:none;">FindBox3d</span><span data-if="python" style="display:none;">find_box_3d</span></code> — Find boxes in 3D data.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>find_box_3d</b>( :  : <a href="#ObjectModel3DScene"><i>ObjectModel3DScene</i></a>, <a href="#SideLen1"><i>SideLen1</i></a>, <a href="#SideLen2"><i>SideLen2</i></a>, <a href="#SideLen3"><i>SideLen3</i></a>, <a href="#MinScore"><i>MinScore</i></a>, <a href="#GenParam"><i>GenParam</i></a> : <a href="#GrippingPose"><i>GrippingPose</i></a>, <a href="#Score"><i>Score</i></a>, <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, <a href="#BoxInformation"><i>BoxInformation</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_find_box_3d</b>(const Htuple <a href="#ObjectModel3DScene"><i>ObjectModel3DScene</i></a>, const Htuple <a href="#SideLen1"><i>SideLen1</i></a>, const Htuple <a href="#SideLen2"><i>SideLen2</i></a>, const Htuple <a href="#SideLen3"><i>SideLen3</i></a>, const Htuple <a href="#MinScore"><i>MinScore</i></a>, const Htuple <a href="#GenParam"><i>GenParam</i></a>, Htuple* <a href="#GrippingPose"><i>GrippingPose</i></a>, Htuple* <a href="#Score"><i>Score</i></a>, Htuple* <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, Htuple* <a href="#BoxInformation"><i>BoxInformation</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FindBox3d</b>(const HTuple&amp; <a href="#ObjectModel3DScene"><i>ObjectModel3DScene</i></a>, const HTuple&amp; <a href="#SideLen1"><i>SideLen1</i></a>, const HTuple&amp; <a href="#SideLen2"><i>SideLen2</i></a>, const HTuple&amp; <a href="#SideLen3"><i>SideLen3</i></a>, const HTuple&amp; <a href="#MinScore"><i>MinScore</i></a>, const HTuple&amp; <a href="#GenParam"><i>GenParam</i></a>, HTuple* <a href="#GrippingPose"><i>GrippingPose</i></a>, HTuple* <a href="#Score"><i>Score</i></a>, HTuple* <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, HTuple* <a href="#BoxInformation"><i>BoxInformation</i></a>)</code></p>
<p>
<code>HPoseArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FindBox3d</b>(const HTuple&amp; <a href="#SideLen1"><i>SideLen1</i></a>, const HTuple&amp; <a href="#SideLen2"><i>SideLen2</i></a>, const HTuple&amp; <a href="#SideLen3"><i>SideLen3</i></a>, const HTuple&amp; <a href="#MinScore"><i>MinScore</i></a>, const HDict&amp; <a href="#GenParam"><i>GenParam</i></a>, HTuple* <a href="#Score"><i>Score</i></a>, HObjectModel3DArray* <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, HDict* <a href="#BoxInformation"><i>BoxInformation</i></a>) const</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FindBox3d</b>(const HTuple&amp; <a href="#SideLen1"><i>SideLen1</i></a>, const HTuple&amp; <a href="#SideLen2"><i>SideLen2</i></a>, const HTuple&amp; <a href="#SideLen3"><i>SideLen3</i></a>, double <a href="#MinScore"><i>MinScore</i></a>, const HDict&amp; <a href="#GenParam"><i>GenParam</i></a>, HTuple* <a href="#Score"><i>Score</i></a>, HObjectModel3DArray* <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, HDict* <a href="#BoxInformation"><i>BoxInformation</i></a>) const</code></p>
<p>
<code>static HPoseArray <a href="HSurfaceModel.html">HSurfaceModel</a>::<b>FindBox3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3DScene"><i>ObjectModel3DScene</i></a>, const HTuple&amp; <a href="#SideLen1"><i>SideLen1</i></a>, const HTuple&amp; <a href="#SideLen2"><i>SideLen2</i></a>, const HTuple&amp; <a href="#SideLen3"><i>SideLen3</i></a>, const HTuple&amp; <a href="#MinScore"><i>MinScore</i></a>, const HDict&amp; <a href="#GenParam"><i>GenParam</i></a>, HTuple* <a href="#Score"><i>Score</i></a>, HObjectModel3DArray* <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, HDict* <a href="#BoxInformation"><i>BoxInformation</i></a>)</code></p>
<p>
<code>static <a href="HPose.html">HPose</a> <a href="HSurfaceModel.html">HSurfaceModel</a>::<b>FindBox3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3DScene"><i>ObjectModel3DScene</i></a>, const HTuple&amp; <a href="#SideLen1"><i>SideLen1</i></a>, const HTuple&amp; <a href="#SideLen2"><i>SideLen2</i></a>, const HTuple&amp; <a href="#SideLen3"><i>SideLen3</i></a>, double <a href="#MinScore"><i>MinScore</i></a>, const HDict&amp; <a href="#GenParam"><i>GenParam</i></a>, HTuple* <a href="#Score"><i>Score</i></a>, HObjectModel3DArray* <a href="#ObjectModel3DBox"><i>ObjectModel3DBox</i></a>, HDict* <a href="#BoxInformation"><i>BoxInformation</i></a>)</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FindBox3d</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModel3DScene"><i>objectModel3DScene</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen1"><i>sideLen1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen2"><i>sideLen2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen3"><i>sideLen3</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinScore"><i>minScore</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParam"><i>genParam</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#GrippingPose"><i>grippingPose</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#ObjectModel3DBox"><i>objectModel3DBox</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#BoxInformation"><i>boxInformation</i></a>)</code></p>
<p>
<code><a href="HPose.html">HPose[]</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>FindBox3d</b>(<a href="HTuple.html">HTuple</a> <a href="#SideLen1"><i>sideLen1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen2"><i>sideLen2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen3"><i>sideLen3</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinScore"><i>minScore</i></a>, <a href="HDict.html">HDict</a> <a href="#GenParam"><i>genParam</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>, out <a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3DBox"><i>objectModel3DBox</i></a>, out <a href="HDict.html">HDict</a> <a href="#BoxInformation"><i>boxInformation</i></a>)</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>FindBox3d</b>(<a href="HTuple.html">HTuple</a> <a href="#SideLen1"><i>sideLen1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen2"><i>sideLen2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen3"><i>sideLen3</i></a>, double <a href="#MinScore"><i>minScore</i></a>, <a href="HDict.html">HDict</a> <a href="#GenParam"><i>genParam</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>, out <a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3DBox"><i>objectModel3DBox</i></a>, out <a href="HDict.html">HDict</a> <a href="#BoxInformation"><i>boxInformation</i></a>)</code></p>
<p>
<code>static <a href="HPose.html">HPose[]</a> <a href="HSurfaceModel.html">HSurfaceModel</a>.<b>FindBox3d</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3DScene"><i>objectModel3DScene</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen1"><i>sideLen1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen2"><i>sideLen2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen3"><i>sideLen3</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinScore"><i>minScore</i></a>, <a href="HDict.html">HDict</a> <a href="#GenParam"><i>genParam</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>, out <a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3DBox"><i>objectModel3DBox</i></a>, out <a href="HDict.html">HDict</a> <a href="#BoxInformation"><i>boxInformation</i></a>)</code></p>
<p>
<code>static <a href="HPose.html">HPose</a> <a href="HSurfaceModel.html">HSurfaceModel</a>.<b>FindBox3d</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3DScene"><i>objectModel3DScene</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen1"><i>sideLen1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen2"><i>sideLen2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SideLen3"><i>sideLen3</i></a>, double <a href="#MinScore"><i>minScore</i></a>, <a href="HDict.html">HDict</a> <a href="#GenParam"><i>genParam</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>, out <a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3DBox"><i>objectModel3DBox</i></a>, out <a href="HDict.html">HDict</a> <a href="#BoxInformation"><i>boxInformation</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>find_box_3d</b>(<a href="#ObjectModel3DScene"><i>object_model_3dscene</i></a>: HHandle, <a href="#SideLen1"><i>side_len_1</i></a>: Sequence[float], <a href="#SideLen2"><i>side_len_2</i></a>: Sequence[float], <a href="#SideLen3"><i>side_len_3</i></a>: Sequence[float], <a href="#MinScore"><i>min_score</i></a>: Union[float, int], <a href="#GenParam"><i>gen_param</i></a>: HHandle) -&gt; Tuple[Sequence[Union[float, int]], Sequence[float], Sequence[HHandle], HHandle]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code> finds boxes in the 3D object model
<a href="#ObjectModel3DScene"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DScene</span><span data-if="c" style="display:none">ObjectModel3DScene</span><span data-if="cpp" style="display:none">ObjectModel3DScene</span><span data-if="com" style="display:none">ObjectModel3DScene</span><span data-if="dotnet" style="display:none">objectModel3DScene</span><span data-if="python" style="display:none">object_model_3dscene</span></code></i></a> and returns the pose of a gripping point
<a href="#GrippingPose"><i><code><span data-if="hdevelop" style="display:inline">GrippingPose</span><span data-if="c" style="display:none">GrippingPose</span><span data-if="cpp" style="display:none">GrippingPose</span><span data-if="com" style="display:none">GrippingPose</span><span data-if="dotnet" style="display:none">grippingPose</span><span data-if="python" style="display:none">gripping_pose</span></code></i></a>, a 3D object model <a href="#ObjectModel3DBox"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DBox</span><span data-if="c" style="display:none">ObjectModel3DBox</span><span data-if="cpp" style="display:none">ObjectModel3DBox</span><span data-if="com" style="display:none">ObjectModel3DBox</span><span data-if="dotnet" style="display:none">objectModel3DBox</span><span data-if="python" style="display:none">object_model_3dbox</span></code></i></a> a score
value <a href="#Score"><i><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></i></a> and a dictionary <a href="#BoxInformation"><i><code><span data-if="hdevelop" style="display:inline">BoxInformation</span><span data-if="c" style="display:none">BoxInformation</span><span data-if="cpp" style="display:none">BoxInformation</span><span data-if="com" style="display:none">BoxInformation</span><span data-if="dotnet" style="display:none">boxInformation</span><span data-if="python" style="display:none">box_information</span></code></i></a>, containing
further information about the found boxes, for each found box.
</p>
<p>The side lengths of the boxes are passed
in <a href="#SideLen1"><i><code><span data-if="hdevelop" style="display:inline">SideLen1</span><span data-if="c" style="display:none">SideLen1</span><span data-if="cpp" style="display:none">SideLen1</span><span data-if="com" style="display:none">SideLen1</span><span data-if="dotnet" style="display:none">sideLen1</span><span data-if="python" style="display:none">side_len_1</span></code></i></a>, <a href="#SideLen2"><i><code><span data-if="hdevelop" style="display:inline">SideLen2</span><span data-if="c" style="display:none">SideLen2</span><span data-if="cpp" style="display:none">SideLen2</span><span data-if="com" style="display:none">SideLen2</span><span data-if="dotnet" style="display:none">sideLen2</span><span data-if="python" style="display:none">side_len_2</span></code></i></a>, and <a href="#SideLen3"><i><code><span data-if="hdevelop" style="display:inline">SideLen3</span><span data-if="c" style="display:none">SideLen3</span><span data-if="cpp" style="display:none">SideLen3</span><span data-if="com" style="display:none">SideLen3</span><span data-if="dotnet" style="display:none">sideLen3</span><span data-if="python" style="display:none">side_len_3</span></code></i></a>.
Each length consists of a tuple of two values,
indicating the minimum and maximum length of that side.
If only a single face of the box is expected to be visible, or no restriction
should be applied to the remaining box length,
<a href="#SideLen3"><i><code><span data-if="hdevelop" style="display:inline">SideLen3</span><span data-if="c" style="display:none">SideLen3</span><span data-if="cpp" style="display:none">SideLen3</span><span data-if="com" style="display:none">SideLen3</span><span data-if="dotnet" style="display:none">sideLen3</span><span data-if="python" style="display:none">side_len_3</span></code></i></a> can be set to <i>-1</i>.
</p>
<p>The parameter <a href="#MinScore"><i><code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code></i></a> sets the minimum score for boxes to be
returned. Boxes with a score smaller than this value will not be returned.
</p>
<p><a href="#ObjectModel3DScene"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DScene</span><span data-if="c" style="display:none">ObjectModel3DScene</span><span data-if="cpp" style="display:none">ObjectModel3DScene</span><span data-if="com" style="display:none">ObjectModel3DScene</span><span data-if="dotnet" style="display:none">objectModel3DScene</span><span data-if="python" style="display:none">object_model_3dscene</span></code></i></a> must contain a XYZ-mapping, like it is, e.g., the
case, when creating it with <a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>.
</p>
<h3>Typical Workflow</h3>
<p>A typical workflow for detecting 3D boxes in 3D data looks as follows:
</p>
<ol>
<li>
<p>
Obtain the 3D data either as XYZ-images, or directly as
a 3D object model with XYZ-mapping.
</p>
</li>
<li>
<p>
Remove as much background and clutter that is not part of any box
from the scene as possible, in order to increase robustness and speed.
Therefore, e.g., use <a href="threshold.html"><code><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></code></a> and <a href="reduce_domain.html"><code><span data-if="hdevelop" style="display:inline">reduce_domain</span><span data-if="c" style="display:none">reduce_domain</span><span data-if="cpp" style="display:none">ReduceDomain</span><span data-if="com" style="display:none">ReduceDomain</span><span data-if="dotnet" style="display:none">ReduceDomain</span><span data-if="python" style="display:none">reduce_domain</span></code></a>
on the XYZ-images before calling <a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>.
Further options are described in the section “Troubleshooting” below.
</p>
</li>
<li>
<p>
If the 3D data exists in the form of XYZ-images, convert them to
a 3D object model using <a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>.
</p>
</li>
<li>
<p>
Obtain the approximate box edge lengths that should be found.
Note that changing those lengths later on might make it necessary
to also change other parameters, such as <a href="#MinScore"><i><code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code></i></a>.
</p>
</li>
<li>
<p>
Call <code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code>, passing the 3D object model with the
scene and the approximate box edge lengths.
</p>
</li>
<li>
<p>
Use the procedure <code>visualize_object_model_3d</code> to visualize the
results, if necessary.
</p>
</li>
</ol>
<h3>Understanding the Results</h3>
<p>The boxes are returned in several ways.
</p>
<p>First, the pose of a gripping point is returned in <a href="#GrippingPose"><i><code><span data-if="hdevelop" style="display:inline">GrippingPose</span><span data-if="c" style="display:none">GrippingPose</span><span data-if="cpp" style="display:none">GrippingPose</span><span data-if="com" style="display:none">GrippingPose</span><span data-if="dotnet" style="display:none">grippingPose</span><span data-if="python" style="display:none">gripping_pose</span></code></i></a>.
The used side of the box and the z-axis of the gripping pose are set
according to the XYZ-mapping. If only a single side of the box is visible,
the center of the gripping pose is in the center of that side, and its
z-axis is oriented away from the viewing point of the XYZ-mapping.
If multiple sides of the box are visible, the gripping pose lies in the
center of the side that is most parallel to the viewing point of the
XYZ-mapping. The z-axis is again oriented away from the viewing point
of the XYZ-mapping.
The x-axis of the gripping pose is set to the box axis that is roughly
the most aligned with the column direction of the XYZ-mapping. The
y-axis is computed based on the x- and z-axis.
</p>
<p>The box is also returned in triangulated form in <a href="#ObjectModel3DBox"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3DBox</span><span data-if="c" style="display:none">ObjectModel3DBox</span><span data-if="cpp" style="display:none">ObjectModel3DBox</span><span data-if="com" style="display:none">ObjectModel3DBox</span><span data-if="dotnet" style="display:none">objectModel3DBox</span><span data-if="python" style="display:none">object_model_3dbox</span></code></i></a>.
This allows a quick visualization of the results.
</p>
<p>For each found box, a score  between <i>0</i> and <i>1</i> is returned
in <a href="#Score"><i><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></i></a>.
The score indicates how well the box and its edges are visible, and how
well the found box matches the specified dimensions.
</p>
<p>Finally, additional information about the results is returned in the
dictionary <a href="#BoxInformation"><i><code><span data-if="hdevelop" style="display:inline">BoxInformation</span><span data-if="c" style="display:none">BoxInformation</span><span data-if="cpp" style="display:none">BoxInformation</span><span data-if="com" style="display:none">BoxInformation</span><span data-if="dotnet" style="display:none">boxInformation</span><span data-if="python" style="display:none">box_information</span></code></i></a>.
<a href="get_dict_param.html"><code><span data-if="hdevelop" style="display:inline">get_dict_param</span><span data-if="c" style="display:none">get_dict_param</span><span data-if="cpp" style="display:none">GetDictParam</span><span data-if="com" style="display:none">GetDictParam</span><span data-if="dotnet" style="display:none">GetDictParam</span><span data-if="python" style="display:none">get_dict_param</span></code></a> and <a href="get_dict_tuple.html"><code><span data-if="hdevelop" style="display:inline">get_dict_tuple</span><span data-if="c" style="display:none">get_dict_tuple</span><span data-if="cpp" style="display:none">GetDictTuple</span><span data-if="com" style="display:none">GetDictTuple</span><span data-if="dotnet" style="display:none">GetDictTuple</span><span data-if="python" style="display:none">get_dict_tuple</span></code></a> can be used to obtain
further information about the results.
Also, the HDevelop handle inspect window can be used to inspect
the returned dictionary.
</p>
<p>The dictionary <a href="#BoxInformation"><i><code><span data-if="hdevelop" style="display:inline">BoxInformation</span><span data-if="c" style="display:none">BoxInformation</span><span data-if="cpp" style="display:none">BoxInformation</span><span data-if="com" style="display:none">BoxInformation</span><span data-if="dotnet" style="display:none">boxInformation</span><span data-if="python" style="display:none">box_information</span></code></i></a> contains the following keys:
</p>
<dl class="generic">

<dt><b><code>results</code>:</b></dt>
<dd>
<p>

This key references a dictionary containing the found boxes. They are
sorted according to their score in descending order with ascending integer
keys starting at <code>0</code>.
</p>
<p>Each box result is a dictionary with the following keys:
</p>
<dl class="generic">

<dt><b><code>box_pose</code>:</b></dt>
<dd>
<p>

This is the box's pose in the coordinate system of the scene. This pose
is used for visualizing the found box.
</p>
</dd>

<dt><b><code>box_length_x</code>,
<code>box_length_y</code>,
<code>box_length_z</code>:</b></dt>
<dd>
<p>

The side lengths of the found box corresponding to <code>box_pose</code>.
<code>box_length_x</code> and <code>box_length_y</code> will always
contain a positive number. If only a single side of the box is visible,
<code>box_length_z</code> will be set to <i>0</i>.
</p>
</dd>

<dt><b><code>gripping_pose</code>:</b></dt>
<dd>
<p>

The same pose as returned in <a href="#GrippingPose"><i><code><span data-if="hdevelop" style="display:inline">GrippingPose</span><span data-if="c" style="display:none">GrippingPose</span><span data-if="cpp" style="display:none">GrippingPose</span><span data-if="com" style="display:none">GrippingPose</span><span data-if="dotnet" style="display:none">grippingPose</span><span data-if="python" style="display:none">gripping_pose</span></code></i></a>.
</p>
</dd>

<dt><b><code>gripping_length_x</code>,
<code>gripping_length_y</code>,
<code>gripping_length_z</code>:</b></dt>
<dd>
<p>

The side lengths of the found box corresponding to <a href="#GrippingPose"><i><code><span data-if="hdevelop" style="display:inline">GrippingPose</span><span data-if="c" style="display:none">GrippingPose</span><span data-if="cpp" style="display:none">GrippingPose</span><span data-if="com" style="display:none">GrippingPose</span><span data-if="dotnet" style="display:none">grippingPose</span><span data-if="python" style="display:none">gripping_pose</span></code></i></a>.
<code>gripping_length_x</code> and <code>gripping_length_y</code> will always
contain a positive number. If only a single side of the box is visible,
<code>gripping_length_z</code> will be set to <i>0</i>.
</p>
</dd>

<dt><b><code>score</code>:</b></dt>
<dd>
<p>

The same score as returned in <a href="#Score"><i><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></i></a>.
</p>
</dd>

<dt><b><code>one_side_only</code>:</b></dt>
<dd><p>

Boolean indicating whether only one side of the box is visible
(<i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>) or not (<i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>).
</p></dd>
</dl>

</dd>

<dt><b><code>gen_param</code>:</b></dt>
<dd>
<p>

This is a dictionary with the parameters passed to <code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code>.
<a href="#SideLen1"><i><code><span data-if="hdevelop" style="display:inline">SideLen1</span><span data-if="c" style="display:none">SideLen1</span><span data-if="cpp" style="display:none">SideLen1</span><span data-if="com" style="display:none">SideLen1</span><span data-if="dotnet" style="display:none">sideLen1</span><span data-if="python" style="display:none">side_len_1</span></code></i></a>, <a href="#SideLen2"><i><code><span data-if="hdevelop" style="display:inline">SideLen2</span><span data-if="c" style="display:none">SideLen2</span><span data-if="cpp" style="display:none">SideLen2</span><span data-if="com" style="display:none">SideLen2</span><span data-if="dotnet" style="display:none">sideLen2</span><span data-if="python" style="display:none">side_len_2</span></code></i></a>, and <a href="#SideLen3"><i><code><span data-if="hdevelop" style="display:inline">SideLen3</span><span data-if="c" style="display:none">SideLen3</span><span data-if="cpp" style="display:none">SideLen3</span><span data-if="com" style="display:none">SideLen3</span><span data-if="dotnet" style="display:none">sideLen3</span><span data-if="python" style="display:none">side_len_3</span></code></i></a> are pooled in
a tuple with key <code>lengths</code>. The key <code>min_score</code>
references <a href="#MinScore"><i><code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code></i></a>. The other keys are denoted analogously to the
generic parameters of the dictionary <a href="#GenParam"><i><code><span data-if="hdevelop" style="display:inline">GenParam</span><span data-if="c" style="display:none">GenParam</span><span data-if="cpp" style="display:none">GenParam</span><span data-if="com" style="display:none">GenParam</span><span data-if="dotnet" style="display:none">genParam</span><span data-if="python" style="display:none">gen_param</span></code></i></a>.
</p>
</dd>

<dt><b><code>sampled_edges</code>:</b></dt>
<dd>
<p>

This is the 3D object model with sampled edges. It contains the viewing
direction of the edge points as normal vectors.
</p>
</dd>

<dt><b><code>sampled_edges_direction</code>:</b></dt>
<dd>
<p>

This is the 3D object model with sampled edges (same as for key
<code>sampled_edges</code>. It contains the edge directions of the edge
points as normal vectors.
</p>
</dd>

<dt><b><code>sampled_scene</code>:</b></dt>
<dd>
<p>

This is the sampled scene in which the boxes are looked for. It can be used
for visualization or debugging the sampling distance.
</p>
</dd>

<dt><b><code>sampled_reference_points</code>:</b></dt>
<dd><p>

This is a 3D object model with all points from the 3D scene that were
used as reference points in the matching process. For each reference
point, the optimum pose of the box is computed under the assumption that
the reference point lies on the surface of the box.
</p></dd>
</dl>
<h3>Generic Parameters</h3>
<p>Additional parameters can be passed as key/tuple pairs in the dictionary
<a href="#GenParam"><i><code><span data-if="hdevelop" style="display:inline">GenParam</span><span data-if="c" style="display:none">GenParam</span><span data-if="cpp" style="display:none">GenParam</span><span data-if="com" style="display:none">GenParam</span><span data-if="dotnet" style="display:none">genParam</span><span data-if="python" style="display:none">gen_param</span></code></i></a> in order to improve the matching process.
The following parameter names serve as keys to their
corresponding tuples (see <a href="create_dict.html"><code><span data-if="hdevelop" style="display:inline">create_dict</span><span data-if="c" style="display:none">create_dict</span><span data-if="cpp" style="display:none">CreateDict</span><span data-if="com" style="display:none">CreateDict</span><span data-if="dotnet" style="display:none">CreateDict</span><span data-if="python" style="display:none">create_dict</span></code></a> and <a href="set_dict_tuple.html"><code><span data-if="hdevelop" style="display:inline">set_dict_tuple</span><span data-if="c" style="display:none">set_dict_tuple</span><span data-if="cpp" style="display:none">SetDictTuple</span><span data-if="com" style="display:none">SetDictTuple</span><span data-if="dotnet" style="display:none">SetDictTuple</span><span data-if="python" style="display:none">set_dict_tuple</span></code></a>).
</p>
<dl class="generic">

<dt><b><code>3d_edges</code>:</b></dt>
<dd>
<p>

Allows to manually set the 3D scene edges.
The parameter must be a 3D object model handle.
The edges are usually a result of 该算子
<a href="edges_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">edges_object_model_3d</span><span data-if="c" style="display:none">edges_object_model_3d</span><span data-if="cpp" style="display:none">EdgesObjectModel3d</span><span data-if="com" style="display:none">EdgesObjectModel3d</span><span data-if="dotnet" style="display:none">EdgesObjectModel3d</span><span data-if="python" style="display:none">edges_object_model_3d</span></code></a> but can further be filtered in order
to remove outliers.
If this parameter is not given, <code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code> will
internally extract the 3D edges similar to 该算子
<a href="edges_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">edges_object_model_3d</span><span data-if="c" style="display:none">edges_object_model_3d</span><span data-if="cpp" style="display:none">EdgesObjectModel3d</span><span data-if="com" style="display:none">EdgesObjectModel3d</span><span data-if="dotnet" style="display:none">EdgesObjectModel3d</span><span data-if="python" style="display:none">edges_object_model_3d</span></code></a>.
</p>
</dd>

<dt><b><code>3d_edge_min_amplitude</code>:</b></dt>
<dd>
<p>

Sets the minimum amplitude of a discontinuity in order for it to be
classified as an edge.
Note that if edges were passed manually with the generic parameter
<code>3d_edges</code>, this parameter is ignored.
Otherwise, it behaves similar to the parameter <code><span data-if="hdevelop" style="display:inline">MinAmplitude</span><span data-if="c" style="display:none">MinAmplitude</span><span data-if="cpp" style="display:none">MinAmplitude</span><span data-if="com" style="display:none">MinAmplitude</span><span data-if="dotnet" style="display:none">minAmplitude</span><span data-if="python" style="display:none">min_amplitude</span></code> of
该算子 <a href="edges_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">edges_object_model_3d</span><span data-if="c" style="display:none">edges_object_model_3d</span><span data-if="cpp" style="display:none">EdgesObjectModel3d</span><span data-if="com" style="display:none">EdgesObjectModel3d</span><span data-if="dotnet" style="display:none">EdgesObjectModel3d</span><span data-if="python" style="display:none">edges_object_model_3d</span></code></a>.</p>
<p>
<i>Assertion:</i> <code>3d_edge_min_amplitude</code> &gt;= 0</p>
<p>
<i>Default value:</i> 10% of the smallest box diagonal.
</p>
</dd>

<dt><b><code>max_gap</code>:</b></dt>
<dd>
<p>

If no edges are passed with <code>3d_edges</code>, 该算子 will extract
3D edges internally. The parameter can be used to control
the edge extraction.
</p>
<p><code>max_gap</code> has the same meaning as in
<a href="edges_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">edges_object_model_3d</span><span data-if="c" style="display:none">edges_object_model_3d</span><span data-if="cpp" style="display:none">EdgesObjectModel3d</span><span data-if="com" style="display:none">EdgesObjectModel3d</span><span data-if="dotnet" style="display:none">EdgesObjectModel3d</span><span data-if="python" style="display:none">edges_object_model_3d</span></code></a>.
</p>
</dd>

<dt><b><code>remove_outer_edges</code>:</b></dt>
<dd>
<p>

Removes the outermost edges when set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>. This is for
example helpful for bin picking applications in order to remove the bin.
</p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i> </p>
<p>
<i>Possible values:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>, <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>
</p>
</dd>

<dt><b><code>max_num_boxes</code>:</b></dt>
<dd>
<p>

Limits the number of returned boxes.
By default, <code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code> will return all detected boxes with a
score larger than <a href="#MinScore"><i><code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code></i></a>.
This parameter can be used to limit the number of boxes respectively.
</p>
<p>
<i>Default value:</i> <i>0</i> (return all boxes)
</p>
</dd>

<dt><b><code>box_type</code>:</b></dt>
<dd>
<p>

Sets the type of boxes to search for.
For <i><span data-if="hdevelop" style="display:inline">'full_box_visible'</span><span data-if="c" style="display:none">"full_box_visible"</span><span data-if="cpp" style="display:none">"full_box_visible"</span><span data-if="com" style="display:none">"full_box_visible"</span><span data-if="dotnet" style="display:none">"full_box_visible"</span><span data-if="python" style="display:none">"full_box_visible"</span></i> only boxes with more than one side visible
are returned.
If <i><span data-if="hdevelop" style="display:inline">'single_side_visible'</span><span data-if="c" style="display:none">"single_side_visible"</span><span data-if="cpp" style="display:none">"single_side_visible"</span><span data-if="com" style="display:none">"single_side_visible"</span><span data-if="dotnet" style="display:none">"single_side_visible"</span><span data-if="python" style="display:none">"single_side_visible"</span></i> is set, boxes with only one visible side
are searched for. If further box sides are visible nonetheless, they are
ignored.
For <i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i> both types are returned.
</p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i> </p>
<p>
<i>Possible values:</i> <i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i>, <i><span data-if="hdevelop" style="display:inline">'single_side_visible'</span><span data-if="c" style="display:none">"single_side_visible"</span><span data-if="cpp" style="display:none">"single_side_visible"</span><span data-if="com" style="display:none">"single_side_visible"</span><span data-if="dotnet" style="display:none">"single_side_visible"</span><span data-if="python" style="display:none">"single_side_visible"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'full_box_visible'</span><span data-if="c" style="display:none">"full_box_visible"</span><span data-if="cpp" style="display:none">"full_box_visible"</span><span data-if="com" style="display:none">"full_box_visible"</span><span data-if="dotnet" style="display:none">"full_box_visible"</span><span data-if="python" style="display:none">"full_box_visible"</span></i>
</p>
</dd>
</dl>
<h3>Troubleshooting</h3>
<dl class="generic">

<dt><b><i>Visualizing extracted edges and sampled scene</i>:</b></dt>
<dd>

<p>
To debug the box detector, some of the internally used data can be
visualized by obtaining it from the returned dictionary
<a href="#BoxInformation"><i><code><span data-if="hdevelop" style="display:inline">BoxInformation</span><span data-if="c" style="display:none">BoxInformation</span><span data-if="cpp" style="display:none">BoxInformation</span><span data-if="com" style="display:none">BoxInformation</span><span data-if="dotnet" style="display:none">boxInformation</span><span data-if="python" style="display:none">box_information</span></code></i></a>, using <a href="get_dict_tuple.html"><code><span data-if="hdevelop" style="display:inline">get_dict_tuple</span><span data-if="c" style="display:none">get_dict_tuple</span><span data-if="cpp" style="display:none">GetDictTuple</span><span data-if="com" style="display:none">GetDictTuple</span><span data-if="dotnet" style="display:none">GetDictTuple</span><span data-if="python" style="display:none">get_dict_tuple</span></code></a>.
</p>
<p>The sampled 3D scene can be extracted with the key
<code>sampled_scene</code>. Finding smaller boxes requires a denser
sampling and subsequently slows down the box detection.
</p>
<p>The sampled 3D edges can be extracted with the key
<code>sampled_edges</code> and <code>sampled_edges_directions</code>.
Both 3D object models contain the same points, however,
<code>sampled_edges</code> contains the viewing direction of the edge
points as normal vectors, while <code>sampled_edges_directions</code>
contains the edge directions of the edge points as normal vectors.
Note that the edge directions should be perpendicular to the edges,
pointing outwards of the boxes.
</p>
</dd>

<dt><b><i>Improve performance</i>:</b></dt>
<dd>

<p>
If <code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code> is taking too long, the following steps
might help to increase its performance.
</p>
<ul>
<li>
<p> <b>Remove more background and clutter</b>:
A significant improvement in runtime and detection accuracy can
usually be achieved by removing as much of the background and
clutter from the 3D scene as possible.
</p>
<p>The most common approaches for removing unwanted data are:
</p>
<ul>
<li>
<p> Thresholding the X-, Y- and Z-coordinates, either by
using <a href="threshold.html"><code><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></code></a> and <a href="reduce_domain.html"><code><span data-if="hdevelop" style="display:inline">reduce_domain</span><span data-if="c" style="display:none">reduce_domain</span><span data-if="cpp" style="display:none">ReduceDomain</span><span data-if="com" style="display:none">ReduceDomain</span><span data-if="dotnet" style="display:none">ReduceDomain</span><span data-if="python" style="display:none">reduce_domain</span></code></a>
on the XYZ-images before calling <a href="xyz_to_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></code></a>,
or by using <a href="select_points_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">select_points_object_model_3d</span><span data-if="c" style="display:none">select_points_object_model_3d</span><span data-if="cpp" style="display:none">SelectPointsObjectModel3d</span><span data-if="com" style="display:none">SelectPointsObjectModel3d</span><span data-if="dotnet" style="display:none">SelectPointsObjectModel3d</span><span data-if="python" style="display:none">select_points_object_model_3d</span></code></a> directly
on the 3D object model that contains the scene.
</p>
</li>
<li>
<p> Some sensors return an intensity image along with the 3D data.
Filters on the intensity image can be used to remove parts of
the image that contain background.
</p>
</li>
<li>
<p> Use background subtraction. If the scene is static, for example,
if the sensor is mounted in a fixed position over a conveyor belt,
the XYZ-images of the background can be acquired once without
any boxes in it. Afterwards, <a href="sub_image.html"><code><span data-if="hdevelop" style="display:inline">sub_image</span><span data-if="c" style="display:none">sub_image</span><span data-if="cpp" style="display:none">SubImage</span><span data-if="com" style="display:none">SubImage</span><span data-if="dotnet" style="display:none">SubImage</span><span data-if="python" style="display:none">sub_image</span></code></a> and <a href="threshold.html"><code><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></code></a>
can be used on the Z-images to select parts of the 3D data
that are not part of the background.
</p>
</li>
</ul>

</li>
<li>
<p> <b>Increase minimum score</b>:
An increased minimum score <a href="#MinScore"><i><code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code></i></a> might lead to more boxes
being removed earlier in the detection pipeline.
</p>
</li>
<li>
<p> <b>Increase the smallest possible box</b>:
The smaller the smallest possible box side is, the slower
<code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code> runs.
For example, if all boxes are usually seen from a single side,
it might make sense to set <a href="#SideLen3"><i><code><span data-if="hdevelop" style="display:inline">SideLen3</span><span data-if="c" style="display:none">SideLen3</span><span data-if="cpp" style="display:none">SideLen3</span><span data-if="com" style="display:none">SideLen3</span><span data-if="dotnet" style="display:none">sideLen3</span><span data-if="python" style="display:none">side_len_3</span></code></i></a> to <i>-1</i>.
Additionally, <code>box_type</code> can be set to limit the
type of boxes that are searched.
</p>
</li>
<li>
<p> <b>Manually computing and filtering edges</b>:
The edges of the scene can be extracted manually, using
<a href="edges_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">edges_object_model_3d</span><span data-if="c" style="display:none">edges_object_model_3d</span><span data-if="cpp" style="display:none">EdgesObjectModel3d</span><span data-if="com" style="display:none">EdgesObjectModel3d</span><span data-if="dotnet" style="display:none">EdgesObjectModel3d</span><span data-if="python" style="display:none">edges_object_model_3d</span></code></a>, and passed to <code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code>
using the generic parameter <code>3d_edges</code> (see above).
Thus, the manual extraction can be used as a further way of
filtering the edges.
</p>
</li>
</ul>
</dd>
</dl>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<p>This operator supports canceling timeouts and interrupts.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3DScene" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3DScene</span><span data-if="c" style="display:none">ObjectModel3DScene</span><span data-if="cpp" style="display:none">ObjectModel3DScene</span><span data-if="com" style="display:none">ObjectModel3DScene</span><span data-if="dotnet" style="display:none">objectModel3DScene</span><span data-if="python" style="display:none">object_model_3dscene</span></code></b> (input_control)  </span><span>object_model_3d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of 3D object model where to search the box.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="SideLen1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SideLen1</span><span data-if="c" style="display:none">SideLen1</span><span data-if="cpp" style="display:none">SideLen1</span><span data-if="com" style="display:none">SideLen1</span><span data-if="dotnet" style="display:none">sideLen1</span><span data-if="python" style="display:none">side_len_1</span></code></b> (input_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Length of the first box side.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="SideLen2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SideLen2</span><span data-if="c" style="display:none">SideLen2</span><span data-if="cpp" style="display:none">SideLen2</span><span data-if="com" style="display:none">SideLen2</span><span data-if="dotnet" style="display:none">sideLen2</span><span data-if="python" style="display:none">side_len_2</span></code></b> (input_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Length of the second box side.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="SideLen3" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SideLen3</span><span data-if="c" style="display:none">SideLen3</span><span data-if="cpp" style="display:none">SideLen3</span><span data-if="com" style="display:none">SideLen3</span><span data-if="dotnet" style="display:none">sideLen3</span><span data-if="python" style="display:none">side_len_3</span></code></b> (input_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Length of the third box side.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-1</p>
</div>
  <div class="par">
<div class="parhead">
<span id="MinScore" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Minimum score of the returned boxes.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.6</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>0 &lt;= MinScore &lt;= 1</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParam" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParam</span><span data-if="c" style="display:none">GenParam</span><span data-if="cpp" style="display:none">GenParam</span><span data-if="com" style="display:none">GenParam</span><span data-if="dotnet" style="display:none">genParam</span><span data-if="python" style="display:none">gen_param</span></code></b> (input_control)  </span><span>dict <code>→</code> <span data-if="dotnet" style="display:none"><a href="HDict.html">HDict</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Dictionary for generic parameters.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
</div>
  <div class="par">
<div class="parhead">
<span id="GrippingPose" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GrippingPose</span><span data-if="c" style="display:none">GrippingPose</span><span data-if="cpp" style="display:none">GrippingPose</span><span data-if="com" style="display:none">GrippingPose</span><span data-if="dotnet" style="display:none">grippingPose</span><span data-if="python" style="display:none">gripping_pose</span></code></b> (output_control)  </span><span>pose(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Gripping poses of the detected boxes.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Score" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Scores of the detected boxes.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3DBox" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3DBox</span><span data-if="c" style="display:none">ObjectModel3DBox</span><span data-if="cpp" style="display:none">ObjectModel3DBox</span><span data-if="com" style="display:none">ObjectModel3DBox</span><span data-if="dotnet" style="display:none">objectModel3DBox</span><span data-if="python" style="display:none">object_model_3dbox</span></code></b> (output_control)  </span><span>object_model_3d-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Detected boxes as triangulated 3D object models.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="BoxInformation" class="parname"><b><code><span data-if="hdevelop" style="display:inline">BoxInformation</span><span data-if="c" style="display:none">BoxInformation</span><span data-if="cpp" style="display:none">BoxInformation</span><span data-if="com" style="display:none">BoxInformation</span><span data-if="dotnet" style="display:none">boxInformation</span><span data-if="python" style="display:none">box_information</span></code></b> (output_control)  </span><span>dict <code>→</code> <span data-if="dotnet" style="display:none"><a href="HDict.html">HDict</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Additional debug information as dictionary.</p>
</div>
<h2 id="sec_result">结果</h2>
<p>If all parameters are valid and no error occurs,
<code><span data-if="hdevelop" style="display:inline">find_box_3d</span><span data-if="c" style="display:none">find_box_3d</span><span data-if="cpp" style="display:none">FindBox3d</span><span data-if="com" style="display:none">FindBox3d</span><span data-if="dotnet" style="display:none">FindBox3d</span><span data-if="python" style="display:none">find_box_3d</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .  如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>, 
<code><a href="xyz_to_object_model_3d.html"><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="gen_box_object_model_3d.html"><span data-if="hdevelop" style="display:inline">gen_box_object_model_3d</span><span data-if="c" style="display:none">gen_box_object_model_3d</span><span data-if="cpp" style="display:none">GenBoxObjectModel3d</span><span data-if="com" style="display:none">GenBoxObjectModel3d</span><span data-if="dotnet" style="display:none">GenBoxObjectModel3d</span><span data-if="python" style="display:none">gen_box_object_model_3d</span></a></code>, 
<code><a href="get_dict_tuple.html"><span data-if="hdevelop" style="display:inline">get_dict_tuple</span><span data-if="c" style="display:none">get_dict_tuple</span><span data-if="cpp" style="display:none">GetDictTuple</span><span data-if="com" style="display:none">GetDictTuple</span><span data-if="dotnet" style="display:none">GetDictTuple</span><span data-if="python" style="display:none">get_dict_tuple</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="find_surface_model.html"><span data-if="hdevelop" style="display:inline">find_surface_model</span><span data-if="c" style="display:none">find_surface_model</span><span data-if="cpp" style="display:none">FindSurfaceModel</span><span data-if="com" style="display:none">FindSurfaceModel</span><span data-if="dotnet" style="display:none">FindSurfaceModel</span><span data-if="python" style="display:none">find_surface_model</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
